package br.com.vti.sisp_sicrim.antigo.model;

import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.SQLException;

import br.com.vti.sisp_sicrim.antigo.dao.DidHistoricoDAO;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;

@SuppressWarnings("serial")
public class DidHistorico implements Serializable {

	private String id = "";
	private Long numeroRg = 0L;
	private Long numeroCpf = 0L;
	private Integer dataAtualizacao = 0;
	private Integer dataInclusao = 0;
	private Integer matriculaInclusao = 0;
	private Long numeroProtocolo = 0L;
	private String polegarDireito = "";
	private String indicadorDireito = "";
	private String medioDireito = "";
	private String anularDireito = "";
	private String minimoDireito = "";
	private String polegarEsquerdo = "";
	private String indicadorEsquerdo = "";
	private String medioEsquerdo = "";
	private String anularEsquerdo = "";
	private String minimoEsquerdo = "";
	private String nomeIdent = "";
	private Integer matriculaFunc = 0;
	private Integer codigoAnomalia = 0;
	private Integer numeroPosto = 0;
	private Integer codigoMotivoBaixa = 0;
	private Integer dataBaixa = 0;
	private Integer dataNasc = 0;
	private Integer numeroGrade = 0;
	private Integer numeroOrdem = 0;
	private Integer estadoCivil = 0;
	private Integer nacionalidade = 0;
	private String nomePai = "";
	private String nomeMae = "";
	private Integer matesp = 0;
	private Integer horaAtu = 0;
	private Integer grauInstrucao = 0;
	private String renaid = "";
	private Integer tipopp = 0;
	private ResultSet consulta = null;
	private DidHistoricoDAO didHistoricoDAO = new DidHistoricoDAO();

	public DidHistorico() {
		super();
	}

	public DidHistorico(String id, Long numeroRg, Long numeroCpf, Integer dataAtualizacao, Integer dataInclusao, Integer matriculaInclusao, Long numeroProtocolo, String polegarDireito, String indicadorDireito, String medioDireito, String anularDireito, String minimoDireito, String polegarEsquerdo, String indicadorEsquerdo, String medioEsquerdo, String anularEsquerdo, String minimoEsquerdo, String nomeIdent, Integer matriculaFunc, Integer codigoAnomalia, Integer numeroPosto, Integer codigoMotivoBaixa, Integer dataBaixa, Integer dataNasc, Integer numeroGrade, Integer numeroOrdem, Integer estadoCivil, Integer nacionalidade, String nomePai, String nomeMae, Integer matesp, Integer horaAtu, Integer grauInstrucao, String renaid, Integer tipopp) {
		super();
		this.id = id;
		this.numeroRg = numeroRg;
		this.numeroCpf = numeroCpf;
		this.dataAtualizacao = dataAtualizacao;
		this.dataInclusao = dataInclusao;
		this.matriculaInclusao = matriculaInclusao;
		this.numeroProtocolo = numeroProtocolo;
		this.polegarDireito = polegarDireito;
		this.indicadorDireito = indicadorDireito;
		this.medioDireito = medioDireito;
		this.anularDireito = anularDireito;
		this.minimoDireito = minimoDireito;
		this.polegarEsquerdo = polegarEsquerdo;
		this.indicadorEsquerdo = indicadorEsquerdo;
		this.medioEsquerdo = medioEsquerdo;
		this.anularEsquerdo = anularEsquerdo;
		this.minimoEsquerdo = minimoEsquerdo;
		this.nomeIdent = nomeIdent;
		this.matriculaFunc = matriculaFunc;
		this.codigoAnomalia = codigoAnomalia;
		this.numeroPosto = numeroPosto;
		this.codigoMotivoBaixa = codigoMotivoBaixa;
		this.dataBaixa = dataBaixa;
		this.dataNasc = dataNasc;
		this.numeroGrade = numeroGrade;
		this.numeroOrdem = numeroOrdem;
		this.estadoCivil = estadoCivil;
		this.nacionalidade = nacionalidade;
		this.nomePai = nomePai;
		this.nomeMae = nomeMae;
		this.matesp = matesp;
		this.horaAtu = horaAtu;
		this.grauInstrucao = grauInstrucao;
		this.renaid = renaid;
		this.tipopp = tipopp;
	}

	public void grava() {

		try {
			this.id = didHistoricoDAO.insert(numeroRg, numeroCpf, dataAtualizacao, dataInclusao, matriculaInclusao, numeroProtocolo, polegarDireito, indicadorDireito, medioDireito, anularDireito, minimoDireito, polegarEsquerdo, indicadorEsquerdo, medioEsquerdo, anularEsquerdo, minimoEsquerdo, nomeIdent, matriculaFunc, codigoAnomalia, numeroPosto, codigoMotivoBaixa, dataBaixa, dataNasc, numeroGrade, numeroOrdem, estadoCivil, nacionalidade, nomePai, nomeMae, matesp, horaAtu, grauInstrucao, renaid, tipopp);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
	}

	public boolean pesquisaNumeroRg(Long pNumeroRg) {

		try {
			if (consulta == null) {
				consulta = didHistoricoDAO.findNumeroRg(pNumeroRg);
			} else {
				consulta = didHistoricoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean leituraNomeIdentMaiorig(String pNomeIdent) {

		try {
			if (consulta == null) {
				consulta = didHistoricoDAO.readNomeIdentge(pNomeIdent);
			} else {
				consulta = didHistoricoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean leituraNumeroCpfMaiorig(Long pNumeroCpf) {

		try {
			if (consulta == null) {
				consulta = didHistoricoDAO.readNumeroCpfge(pNumeroCpf);
			} else {
				consulta = didHistoricoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean leituraNumeroProtocoloMaiorig(Long pNumeroProtocolo) {

		try {
			if (consulta == null) {
				consulta = didHistoricoDAO.readNumeroProtocologe(pNumeroProtocolo);
			} else {
				consulta = didHistoricoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean leituraNumeroRgMaiorig(Long pNumeroRg) {

		try {
			if (consulta == null) {
				consulta = didHistoricoDAO.readNumeroRgge(pNumeroRg);
			} else {
				consulta = didHistoricoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean consultaNomeIdent(String pNomeIdent) {

		try {
			if (consulta == null) {
				consulta = didHistoricoDAO.selectNomeIdent(pNomeIdent);
			} else {
				consulta = didHistoricoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean consultaNumeroCpf(Long pNumeroCpf) {

		try {
			if (consulta == null) {
				consulta = didHistoricoDAO.selectNumeroCpf(pNumeroCpf);
			} else {
				consulta = didHistoricoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean consultaNumeroProtocolo(Long pNumeroProtocolo) {

		try {
			if (consulta == null) {
				consulta = didHistoricoDAO.selectNumeroProtocolo(pNumeroProtocolo);
			} else {
				consulta = didHistoricoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean consultaNumeroRg(Long pNumeroRg) {

		try {
			if (consulta == null) {
				consulta = didHistoricoDAO.selectNumeroRg(pNumeroRg);
			} else {
				consulta = didHistoricoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean fimDados() {
		return !(didHistoricoDAO.temProximo());
	}

	public void salvarQuebras() {

	}

	public void formataAtributos(ResultSet lista) {

		if (lista == null)
			return;
		try {
			this.id = lista.getString("id");
			this.numeroRg = lista.getLong("numeroRg");
			this.numeroCpf = lista.getLong("numeroCpf");
			this.dataAtualizacao = lista.getInt("dataAtualizacao");
			this.dataInclusao = lista.getInt("dataInclusao");
			this.matriculaInclusao = lista.getInt("matriculaInclusao");
			this.numeroProtocolo = lista.getLong("numeroProtocolo");
			this.polegarDireito = lista.getString("polegarDireito");
			this.indicadorDireito = lista.getString("indicadorDireito");
			this.medioDireito = lista.getString("medioDireito");
			this.anularDireito = lista.getString("anularDireito");
			this.minimoDireito = lista.getString("minimoDireito");
			this.polegarEsquerdo = lista.getString("polegarEsquerdo");
			this.indicadorEsquerdo = lista.getString("indicadorEsquerdo");
			this.medioEsquerdo = lista.getString("medioEsquerdo");
			this.anularEsquerdo = lista.getString("anularEsquerdo");
			this.minimoEsquerdo = lista.getString("minimoEsquerdo");
			this.nomeIdent = lista.getString("nomeIdent");
			this.matriculaFunc = lista.getInt("matriculaFunc");
			this.codigoAnomalia = lista.getInt("codigoAnomalia");
			this.numeroPosto = lista.getInt("numeroPosto");
			this.codigoMotivoBaixa = lista.getInt("codigoMotivoBaixa");
			this.dataBaixa = lista.getInt("dataBaixa");
			this.dataNasc = lista.getInt("dataNasc");
			this.numeroGrade = lista.getInt("numeroGrade");
			this.numeroOrdem = lista.getInt("numeroOrdem");
			this.estadoCivil = lista.getInt("estadoCivil");
			this.nacionalidade = lista.getInt("nacionalidade");
			this.nomePai = lista.getString("nomePai");
			this.nomeMae = lista.getString("nomeMae");
			this.matesp = lista.getInt("matesp");
			this.horaAtu = lista.getInt("horaAtu");
			this.grauInstrucao = lista.getInt("grauInstrucao");
			this.renaid = lista.getString("renaid");
			this.tipopp = lista.getInt("tipopp");
		} catch (SQLException e) {
		}
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public Long getNumeroRg() {
		return numeroRg;
	}

	public void setNumeroRg(Long numeroRg) {
		this.numeroRg = numeroRg;
	}

	public Long getNumeroCpf() {
		return numeroCpf;
	}

	public void setNumeroCpf(Long numeroCpf) {
		this.numeroCpf = numeroCpf;
	}

	public Integer getDataAtualizacao() {
		return dataAtualizacao;
	}

	public void setDataAtualizacao(Integer dataAtualizacao) {
		this.dataAtualizacao = dataAtualizacao;
	}

	public Integer getDataInclusao() {
		return dataInclusao;
	}

	public void setDataInclusao(Integer dataInclusao) {
		this.dataInclusao = dataInclusao;
	}

	public Integer getMatriculaInclusao() {
		return matriculaInclusao;
	}

	public void setMatriculaInclusao(Integer matriculaInclusao) {
		this.matriculaInclusao = matriculaInclusao;
	}

	public Long getNumeroProtocolo() {
		return numeroProtocolo;
	}

	public void setNumeroProtocolo(Long numeroProtocolo) {
		this.numeroProtocolo = numeroProtocolo;
	}

	public String getPolegarDireito() {
		return polegarDireito;
	}

	public void setPolegarDireito(String polegarDireito) {
		this.polegarDireito = polegarDireito;
	}

	public String getIndicadorDireito() {
		return indicadorDireito;
	}

	public void setIndicadorDireito(String indicadorDireito) {
		this.indicadorDireito = indicadorDireito;
	}

	public String getMedioDireito() {
		return medioDireito;
	}

	public void setMedioDireito(String medioDireito) {
		this.medioDireito = medioDireito;
	}

	public String getAnularDireito() {
		return anularDireito;
	}

	public void setAnularDireito(String anularDireito) {
		this.anularDireito = anularDireito;
	}

	public String getMinimoDireito() {
		return minimoDireito;
	}

	public void setMinimoDireito(String minimoDireito) {
		this.minimoDireito = minimoDireito;
	}

	public String getPolegarEsquerdo() {
		return polegarEsquerdo;
	}

	public void setPolegarEsquerdo(String polegarEsquerdo) {
		this.polegarEsquerdo = polegarEsquerdo;
	}

	public String getIndicadorEsquerdo() {
		return indicadorEsquerdo;
	}

	public void setIndicadorEsquerdo(String indicadorEsquerdo) {
		this.indicadorEsquerdo = indicadorEsquerdo;
	}

	public String getMedioEsquerdo() {
		return medioEsquerdo;
	}

	public void setMedioEsquerdo(String medioEsquerdo) {
		this.medioEsquerdo = medioEsquerdo;
	}

	public String getAnularEsquerdo() {
		return anularEsquerdo;
	}

	public void setAnularEsquerdo(String anularEsquerdo) {
		this.anularEsquerdo = anularEsquerdo;
	}

	public String getMinimoEsquerdo() {
		return minimoEsquerdo;
	}

	public void setMinimoEsquerdo(String minimoEsquerdo) {
		this.minimoEsquerdo = minimoEsquerdo;
	}

	public String getNomeIdent() {
		return nomeIdent;
	}

	public void setNomeIdent(String nomeIdent) {
		this.nomeIdent = nomeIdent;
	}

	public Integer getMatriculaFunc() {
		return matriculaFunc;
	}

	public void setMatriculaFunc(Integer matriculaFunc) {
		this.matriculaFunc = matriculaFunc;
	}

	public Integer getCodigoAnomalia() {
		return codigoAnomalia;
	}

	public void setCodigoAnomalia(Integer codigoAnomalia) {
		this.codigoAnomalia = codigoAnomalia;
	}

	public Integer getNumeroPosto() {
		return numeroPosto;
	}

	public void setNumeroPosto(Integer numeroPosto) {
		this.numeroPosto = numeroPosto;
	}

	public Integer getCodigoMotivoBaixa() {
		return codigoMotivoBaixa;
	}

	public void setCodigoMotivoBaixa(Integer codigoMotivoBaixa) {
		this.codigoMotivoBaixa = codigoMotivoBaixa;
	}

	public Integer getDataBaixa() {
		return dataBaixa;
	}

	public void setDataBaixa(Integer dataBaixa) {
		this.dataBaixa = dataBaixa;
	}

	public Integer getDataNasc() {
		return dataNasc;
	}

	public void setDataNasc(Integer dataNasc) {
		this.dataNasc = dataNasc;
	}

	public Integer getNumeroGrade() {
		return numeroGrade;
	}

	public void setNumeroGrade(Integer numeroGrade) {
		this.numeroGrade = numeroGrade;
	}

	public Integer getNumeroOrdem() {
		return numeroOrdem;
	}

	public void setNumeroOrdem(Integer numeroOrdem) {
		this.numeroOrdem = numeroOrdem;
	}

	public Integer getEstadoCivil() {
		return estadoCivil;
	}

	public void setEstadoCivil(Integer estadoCivil) {
		this.estadoCivil = estadoCivil;
	}

	public Integer getNacionalidade() {
		return nacionalidade;
	}

	public void setNacionalidade(Integer nacionalidade) {
		this.nacionalidade = nacionalidade;
	}

	public String getNomePai() {
		return nomePai;
	}

	public void setNomePai(String nomePai) {
		this.nomePai = nomePai;
	}

	public String getNomeMae() {
		return nomeMae;
	}

	public void setNomeMae(String nomeMae) {
		this.nomeMae = nomeMae;
	}

	public Integer getMatesp() {
		return matesp;
	}

	public void setMatesp(Integer matesp) {
		this.matesp = matesp;
	}

	public Integer getHoraAtu() {
		return horaAtu;
	}

	public void setHoraAtu(Integer horaAtu) {
		this.horaAtu = horaAtu;
	}

	public Integer getGrauInstrucao() {
		return grauInstrucao;
	}

	public void setGrauInstrucao(Integer grauInstrucao) {
		this.grauInstrucao = grauInstrucao;
	}

	public String getRenaid() {
		return renaid;
	}

	public void setRenaid(String renaid) {
		this.renaid = renaid;
	}

	public Integer getTipopp() {
		return tipopp;
	}

	public void setTipopp(Integer tipopp) {
		this.tipopp = tipopp;
	}

	public void fecha() {
		didHistoricoDAO.fecha();
		consulta = null;
	}

	public long registrosProcessados() {
		return didHistoricoDAO.nroRegistro;
	}

	public long totalRegistros() {
		return didHistoricoDAO.qtdRegistros;
	}

}
